var maxSize = 100 + 'KB', maxNum = 0;

Ext.onReady(function() {

  Ext.QuickTips.init();

  var swfu = new SWFUpload({
    flash_url                    : './script/ux/swfupload/swfupload.swf',
    upload_url                   : 'http://localhost:8080/CMS/account/uploadPhoto.do', // Relative to the SWF file or absolute
    file_size_limit              : maxSize,
    file_types                   : '*.jpg;*.gif;*.png',
    file_types_description       : '',
    file_upload_limit            : maxNum,

    file_queued_handler          : fileQueued,
    file_queue_error_handler     : fileQueueError,
    file_dialog_complete_handler : fileDialogComplete,// 选择文件完毕
    // upload_start_handler : uploadStart,
    // upload_progress_handler : uploadProgress,// 上传进度状态
    upload_error_handler         : uploadError,
    upload_success_handler       : uploadSuccess
  });

  var photo = new Ext.form.FieldSet({
        title  : '个人照片',
        layout : 'column',
        height : 200,
        items  : [{
              html : '<div id="photo-wrap"></div>'
            }]
      });

  var btn = new Ext.form.TwinTriggerField({
        name            : 'photo',
        fieldLabel      : '上传照片',
        readOnly        : true,
        trigger1Class   : 'x-form-clear-trigger',
        trigger2Class   : 'x-form-search-trigger',
        hideTrigger1    : true,
        onTrigger1Click : function() {
          this.el.dom.value = '';
          var el = Ext.get('photo-wrap').child('img').frame('red');
          el.remove();
          this.triggers[0].hide();
        },
        onTrigger2Click : function() {
          swfu.selectFile();
        }
      });

  var basicInfo = new Ext.form.FieldSet({
        title       : '基本信息',
        layout      : 'column',
        autoHeight  : true,
        // checkboxToggle : true,
        // collapsed : true,
        collapsible : true,
        items       : [{
              columnWidth : 0.38,
              layout      : 'form',
              defaults    : {
                xtype  : 'textfield',
                anchor : '95%'
              },
              items       : [{
                    fieldLabel : '姓名'
                  }, {
                    xtype      : 'combo',
                    fieldLabel : '人才类型'
                  }, {
                    fieldLabel : '身份证'
                  }, {
                    fieldLabel : '联系电话'
                  }, {
                    fieldLabel : 'E-mail'
                  }, {
                    fieldLabel : '身高'
                  }, {
                    fieldLabel : '现居住地'
                  }, {
                    fieldLabel : '健康状况'
                  }, {
                    xtype      : 'combo',
                    fieldLabel : '政治面貌'
                  }]
            }, {
              columnWidth : 0.38,
              layout      : 'form',
              defaults    : {
                xtype  : 'textfield',
                anchor : '95%'
              },
              items       : [{
                    fieldLabel : '编号'
                  }, {
                    xtype      : 'radiogroup',
                    fieldLabel : '性别',
                    items      : [{
                          boxLabel : '男',
                          checked  : true,
                          name     : 'sex'
                        }, {
                          boxLabel : '女',
                          name     : 'sex'
                        }]
                  }, {
                    xtype      : 'datefield',
                    fieldLabel : '出生日期'
                  }, {
                    fieldLabel : '联系地址'
                  }, {
                    fieldLabel : '视力'
                  }, {
                    fieldLabel : '体重'
                  }, {
                    fieldLabel : '血型'
                  }, {
                    fieldLabel : '婚姻状况'
                  }, {
                    xtype      : 'combo',
                    fieldLabel : '政治面貌'
                  }]
            }, {
              columnWidth : 0.24,
              items       : [photo]
            }]

      });

  var extraInfo = new Ext.form.FieldSet({
        title       : '其他信息',
        layout      : 'column',
        // collapsed : true,
        collapsible : true,
        items       : [{
              columnWidth : 0.33,
              layout      : 'form',
              defaults    : {
                xtype  : 'textfield',
                anchor : '98%'
              },
              items       : [{
                    fieldLabel : '应聘岗位'
                  }, {
                    fieldLabel : '工作地点'
                  }]
            }, {
              columnWidth : 0.33,
              layout      : 'form',
              defaults    : {
                anchor : '98%'
              },
              items       : [{
                    xtype      : 'combo',
                    fieldLabel : '工作方式'
                  }, {
                    xtype      : 'datefield',
                    fieldLabel : '到职时间'
                  }]
            }, {
              columnWidth : 0.33,
              layout      : 'form',
              defaults    : {
                xtype  : 'textfield',
                anchor : '98%'
              },
              items       : [{
                    fieldLabel : '月薪要求'
                  }, {
                    fieldLabel : '住房要求'
                  }]
            }, {
              columnWidth : 1,
              layout      : 'form',
              items       : [{
                    hideLabel : true,
                    xtype     : 'textarea',
                    anchor    : '98%',
                    emptyText : '请在此处填写详细的备注.',
                    height    : 80
                  }]
            }]

      });

  var formPanel = new Ext.form.FormPanel({
        labelWidth   : 55,
        labelAlign   : 'right',
        frame        : true,
        monitorValid : true,
        bodyStyle    : 'padding: 8px;',
        items        : [basicInfo, extraInfo],
        buttons      : [{
              formBind : true,
              text     : '提交'
            }, {
              text : '取消'
            }]
      });

  var frm = formPanel.getForm();

  var win = new Ext.Window({
        title  : '个人信息',
        width  : 650,
        border : false,
        items  : [formPanel]
      });

  win.show();

  Ext.fly('photo-wrap').on({
        'contextmenu' : {
          fn : function(e) {
            e.stopEvent();
            contextMenu.showAt(e.getXY());
          }
        }
      });

  var contextMenu = new Ext.menu.Menu({
        items : [new Ext.menu.Item({
                  text    : '上传图片',
                  iconCls : 'image-add',
                  handler : function() {
                    swfu.selectFile();
                  }
                }), new Ext.menu.Item({
                  text     : '清除图片',
                  iconCls  : 'image-delete',
                  disabled : true,
                  handler  : function() {
                    var el = Ext.get('photo-wrap').child('img').frame('red');
                    el.remove();
                    this.disable();
                  }
                })]
      });

  // =========================== SWFUpload callback handler ===========================
  function fileQueued(file) {
    // frm.findField('photo').setValue(file.name);
  }

  function fileQueueError(file, errorCode, message) {
    switch (errorCode) {
      case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT :
        showErrorMsg('文件不允许超过 ' + maxSize + '.');
        break;
      case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE :
        showErrorMsg('不允许上传空文件.');
        break;
      case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED :
        showErrorMsg('上传文件数量不允许超过' + maxNum + '个.');
        break;
      case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE :
        showErrorMsg('不允许上传该类文件!');
        break;
      default :
        showErrorMsg('发生未知错误,错误代码:' + errorCode + '.');
        break;
    }
  }

  function fileDialogComplete() {
    swfu.startUpload();
  }

  function showErrorMsg(msg) {
    Ext.Msg.show({
          title   : '错误',
          msg     : msg,
          buttons : Ext.Msg.OK,
          icon    : Ext.MessageBox.ERROR
        });
  }

  function uploadSuccess(file, serverData) {
    var msg = Ext.decode(serverData);
    var result = msg.success;
    if (result) {
      Ext.fly('photo-wrap').child('img') ? Ext.fly('photo-wrap').child('img')
          .remove() : 0;
      Ext.DomHelper.append('photo-wrap', {
            tag   : 'img',
            src   : './images/fs/lovely.png',
            style : 'width:130px;height:160px'
          }, true).show(true);

      // btn.triggers[0].show();
      contextMenu.items.get(1).enable();
    }
  }

  function uploadError(file, errorCode, message) {
    showErrorMsg('上传文件出错.');
  }

});